package com.xdjd.mobile.business.util;

import com.gitee.easyopen.exception.ApiException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListUtil {

	/**
	 * 拷贝一个List,通过属性复制产生一个新的List,新的List存放newListElementCls类型的类
	 * 
	 * @param oldList
	 * @param clazz 新的List元素class类型
	 * @return
	 */
	public static <T> List<T> copyList(List<?> oldList, Class<T> clazz) {
		if (CollectionUtils.isEmpty(oldList)) {
			return Collections.emptyList();
		}
		List<T> ret = new ArrayList<>(oldList.size());
		for (Object object : oldList) {
			try {
				T addr = clazz.newInstance();
				BeanUtils.copyProperties(object, addr);
				ret.add(addr);
			} catch (Exception e) {
				throw new ApiException("转换错误");
			}
		}
		return ret;
	}
	
	/**
	 * 将1,2,3字符串 转换成List类型
	 * @param str
	 * @return
	 */
	public static List<Long> toListLong(String str) {
		return toListLong(str, ",");
	}
	
	public static List<Long> toListLong(String str,String split) {
		String[] idArr = str.split(split);
		List<Long> idList = new ArrayList<>(idArr.length);
		for (String id : idArr) {
			idList.add(Long.valueOf(id.trim()));
		}
		return idList;
	}

	/**
	 * 两个集合就交集
	 * @param arr1
	 * @param arr2
	 * @return
	 */
	public static List<Object> intersect(List<Object> arr1, List<Object> arr2) {
		List<Object> result = new ArrayList<>();
		for (Object arr : arr2) {//遍历list1
			if (arr1.contains(arr)) {//如果存在这个数
				result.add(arr);//放进一个list里面，这个list就是交集
			}
		}
		return result;
	}

	/**
	 *  判断数组是否为空
	 * @param arr
	 * @return
	 */
	public static boolean isNotEmpty(int[] arr){
		if(arr !=null && arr.length>0){
			return true;
		}
		return false;
	}
	/**
	 *  判断数组是否为空
	 * @param arr
	 * @return
	 */
	public static boolean isNotEmpty(String[] arr){
		if(arr !=null && arr.length>0){
			return true;
		}
		return false;
	}
}
